-- random_level_up
-- Created by xinj
-- 道具：随机提升一类工程学手册等级

return {
    apply = function(source, target, classId, value)
        -- 根据类型获取可学习的列表
        local _list = table.keys(EngineeringManualM.querySubject(value));
        local list = {};
        -- 过滤无法学习的项目
        for i = 1, #_list do
            if EngineeringManualM.checkCanLearn(_list[i], true, true) then
                table.insert(list, _list[i]);
            end
        end

        -- 没有可学习项目
        if #list <= 0 then
            return;
        end

        -- 在可学习项目中随机选取
        local seed = DungeonM.getRandSeed("random_level_up");
        local id = list[1 + seed % sizeof(list)];

        -- 执行学习操作
        EngineeringManualM.learnKnowledgePoint(id, true, true);
    end,
};
